1. Field of the Invention
The present invention relates generally to the field of microprocessors and more particularly to the use of modified microprocessor instructions to transform stored processor code.
2. Background Art
Single chip computers are used in a wide range of applications where their small size and processing power are an advantage over conventional systems. When designing a single chip computer, or modifying an existing system for a new application, the system designer must balance the space available on the silicon chip against the space required by the components necessary to provide the desired functionality. Adding components to the computer system such as additional memory or digital to analog converters will add functionality but also will take up valuable chip space. If the chip size is fixed and all available space is already being used, it will not be possible to add functionality without removing a component of equivalent size. Reducing the number of components reduces the required chip size but the number of components cannot be reduced below the minimum necessary for a functional computer.
One component that must be included in single chip computers is memory. The amount of memory required is a function of the complexity and execution speed desired for planned computer software applications. Larger and more complex software programs usually require more memory to properly execute, and more memory usually increases program execution speed.
One way to reduce the memory required in a single chip computer is to store the computer's software code in a compressed form. Compressing the code allows it to be stored in a smaller amount of memory and thereby reduces the computer system memory requirements. There are several available algorithms suitable for compressing computer code. However, since the processor cannot directly execute code stored in compressed form, a method of decompressing the code prior to its execution by the processor is needed. Existing techniques decompress large amounts of code such as a subroutine or large blocks of a main program before executing it. These techniques require the code decompression to occur either in the boot process or by some means external to the system processor. When the system processor is not used for decompression, additional hardware is necessary to accomplish the decompression. This makes it difficult and expensive to incorporate software compression in existing systems.
A further disadvantage to these techniques is the additional memory required to store the larger volume of decompressed code while it is waiting to be executed by the processor. This disadvantage reduces the memory savings originally achieved by compressing the code.
What is needed is a simple and effective method of manipulating and executing compressed computer code without the disadvantages discussed above.